package s_004_Bean_Automatic_Assembly.bean;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

/**
 * 默认加在 ioc 容器中的组件，容器启动会调用无参构造器创建对象，再进行初始化赋值等操作
 */
@Component
public class Boss {

    private Car car;

    /**
     * 构造器要用的组件，默认都是从容器中获取
     */
    public Boss(Car car) {
        this.car = car;
        System.out.println("Boss...有参构造器");
    }

    public Boss() {
    }

    public Car getCar() {
        return car;
    }

    /**
     * 标注在方法上，Spring 容器创建当前对象，就会调用此方法，方法使用的参数，自定义类型的值会从 ioc 容器中获取，完成赋值；
     */
    @Autowired
    public void setCar(Car car) {
        this.car = car;
    }

    /**
     * 标注在类上，调用方法时，方法使用的参数值从 ioc 容器中获取；
     */
    public void setCar2(@Autowired Car car) {
        this.car = car;
    }

    @Override
    public String toString() {
        return "Boss [car=" + car + "]";
    }
}